public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}
class Solution {
    public int minPathSum(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;
        //1.创建dp表
        int[][] dp = new int[m + 1][n + 1];
        //2.初始化
        dp[0][1] = dp[1][0] = 0;
        for(int i = 2; i <= n; i++) dp[0][i] =  Integer.MAX_VALUE;
        for(int i = 2; i <= m; i++) dp[i][0] =  Integer.MAX_VALUE;
        //3.填表
        for(int i = 1; i <= m; i++)
            for(int j = 1; j <= n; j++)
                dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1];

        //4.返回结果
        return dp[m][n];
    }
}